'use strict';
// 后台权限验证
module.exports = (options, app) => {
  return async function adminAuthMiddleware(ctx, next) {
    const allow_active_list = options.allow_active;
    const active_url = ctx.request.path;
    const act_list = ctx.session.act_list || 0;
    let flag = false;
    // 未分配和全分配权限的用户无需验证
    if (act_list !== 0 && act_list !== 'all') {
      for (let allow_active of allow_active_list) { // 判定是否是无需验证的路径
        const active_res = active_url.match(allow_active);
        if (active_res) {
          flag = true;
          break;
        }
      }
      if (!flag) {
        const act_arr = act_list.split(',');
        const active_url_arr = active_url.split('/'); // ['','admin','index','index']
        if (active_url_arr.length === 4) {
          // await ctx.service.redis.getAdminAuthModid(active_url_arr[2] + '-' + active_url_arr[3]);
          const mod = await ctx.model.Systemmodule.find({ // 权限查询匹配
            where: {
              ctl: active_url_arr[2],
              act: active_url_arr[3],
              level: 3,
            }, attributes: [ 'mod_id' ], raw: true,
          });
          if (mod && act_arr.includes('' + mod.mod_id)) flag = true;
        }
      }
    } else {
      flag = true;
    }
    if (flag) {
      await next();
    } else {
      await ctx.error('权限不足');
    }
  };
};

